﻿//下面是使用C#语言编写的面向对象程序，实现长方形、正方形和三角形的类。每个形状类都实现了一个IShape接口，该接口定义了计算面积和判断形状是否合法的方法。每个形状类都有属性来获取和设置相关的尺寸。
using System;

// 定义形状接口
interface IShape
{
    double CalculateArea(); // 计算面积
    bool IsShapeValid(); // 判断形状是否合法
}

// 长方形类
class Rectangle : IShape
{
    private double length;
    private double width;

    public double Length
    {
        get { return length; }
        set { length = value; }
    }

    public double Width
    {
        get { return width; }
        set { width = value; }
    }

    public double CalculateArea()
    {
        return length * width;
    }

    public bool IsShapeValid()
    {
        return length > 0 && width > 0;
    }
}

// 正方形类
class Square : IShape
{
    private double side;

    public double Side
    {
        get { return side; }
        set { side = value; }
    }

    public double CalculateArea()
    {
        return side * side;
    }

    public bool IsShapeValid()
    {
        return side > 0;
    }
}

// 三角形类
class Triangle : IShape
{
    private double side1;
    private double side2;
    private double side3;

    public double Side1
    {
        get { return side1; }
        set { side1 = value; }
    }

    public double Side2
    {
        get { return side2; }
        set { side2 = value; }
    }

    public double Side3
    {
        get { return side3; }
        set { side3 = value; }
    }

    public double CalculateArea()
    {
        // 使用海伦公式计算三角形面积
        double s = (side1 + side2 + side3) / 2;
        double area = Math.Sqrt(s * (s - side1) * (s - side2) * (s - side3));
        return area;
    }

    public bool IsShapeValid()
    {
        // 三角形的任意两边之和大于第三边才是合法的
        return (side1 + side2 > side3) && (side2 + side3 > side1) && (side3 + side1 > side2);
    }
}

class Program
{
    static void Main()
    {
        // 创建一个长方形对象并设置尺寸
        Rectangle rectangle = new Rectangle();
        rectangle.Length = 5.5;
        rectangle.Width = 3.2;

        // 计算长方形的面积并判断形状是否合法
        Console.WriteLine("长方形的面积为：" + rectangle.CalculateArea());
        Console.WriteLine("长方形是否合法：" + rectangle.IsShapeValid());

        // 创建一个正方形对象并设置尺寸
        Square square = new Square();
        square.Side = 4.5;

        // 计算正方形的面积并判断形状是否合法
        Console.WriteLine("正方形的面积为：" + square.CalculateArea());
        Console.WriteLine("正方形是否合法：" + square.IsShapeValid());

        // 创建一个三角形对象并设置边长
        Triangle triangle = new Triangle();
        triangle.Side1 = 3;
        triangle.Side2 = 4;
        triangle.Side3 = 5;

        // 计算三角形的面积并判断形状是否合法
        Console.WriteLine("三角形的面积为：" + triangle.CalculateArea());
        Console.WriteLine("三角形是否合法：" + triangle.IsShapeValid());

        Console.ReadLine();
    }
}